package com.thh.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;

/*
该工具类一些参数编写到properties中。

对外提供两个方法，
    getJedisPool(); 提供jedis的连接池
    getJedis()   直接redis的链接对象jedis.

 */

/**
 * 连接池工具类
 */
public class JedisUtils {

    //该工具类维护一个唯一的连接池
    private static JedisPool jedisPool ;

    static {
        //创建连接池的配置对象
        JedisPoolConfig config = new JedisPoolConfig();

        //1 先把配置文件加载进来   ResourceBundle 底层也是使用了类文件路径去读取的.
        ResourceBundle bundle = ResourceBundle.getBundle("jedis");
        //得到配置文件中的属性值
        String host = bundle.getString("host");
        int port = Integer.parseInt(bundle.getString("port"));
        int maxTotal = Integer.parseInt(bundle.getString("maxTotal"));
        //设置最大连接数和最长等待时间
        int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis"));
        //设置配置对象的参数
        config.setMaxTotal(maxTotal);
        config.setMaxWaitMillis(maxWaitMillis);
        //创建连接池对象
        jedisPool = new JedisPool(config, host, port);
    }


    public static JedisPool getJedisPool() {
        return jedisPool;
    }

    /**
     * 得到redis连接对象
     * @return
     */
    public static Jedis getJedis() {
        return jedisPool.getResource();
    }

}
